// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Library General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA


#include "partida.h"



void Partida::CargaEstacionario(std::string ruta, int fijo)
{
	// Tomamos siempre el objeto como nuevo
	estacionario[num_estacionarios] = new ElementoEstacionario(fijo);
	estacionario[num_estacionarios]->CargarObjeto(ruta);
	num_estacionarios++;
}

void Partida::CargaEstacionario(std::string ruta, 
								float x, float y, float z,
								float rx, float ry, float rz,
								int fijo )
{
	// Tal vez el objeto ya esté en memoria, y sólo queremos duplicarlo
	estacionario[num_estacionarios] = new ElementoEstacionario(fijo);
	int found = 0;
	
	for (int i = 0; i < num_estacionarios; i ++)
		if (estacionario[i]->GetID() == ruta )
		{
			estacionario[num_estacionarios]->CargarObjeto(estacionario[i]);
			found = 1;
			num_estacionarios++;
			break;
		}

	if (!found)
		CargaEstacionario (ruta, fijo);
	
	estacionario[num_estacionarios-1]->Mover (x, y, z);
	estacionario[num_estacionarios-1]->Girar (rx, ry, rz);

	
}


void Partida::CargaEntorno()
{
	// Un entorno, vamos, toooodo el estadio
	CargaEstacionario("pabellon_suelo.obj", 1);
	CargaEstacionario("pabellon_lineas_otras.obj", 1);
	CargaEstacionario("pabellon_paredes_entorno.obj", 1);
	CargaEstacionario("pabellon_puerta.obj", 0, 0, 24.9, 0, 180, 0);
	CargaEstacionario("pabellon_puerta.obj", 24, 2.4, 24.9, 0, 180, 0);
	CargaEstacionario("pabellon_grada_L.obj");
	CargaEstacionario("pabellon_grada_E.obj");
	CargaEstacionario("pabellon_grada_O.obj");
	CargaEstacionario("pabellon_grada_N.obj");
	CargaEstacionario("pabellon_lineas_boccia.obj", 1);
	CargaEstacionario("pabellon_publi.obj", 1);
	CargaEstacionario("pabellon_escaleras_barandilla.obj", 13.5, 0, 9.2, 0, 0, 0);
	CargaEstacionario("pabellon_escaleras_barandilla.obj", 13.5, 0, 0, 0, 0, 0);
	CargaEstacionario("pabellon_escaleras_barandilla.obj", 13.5, 0, -9.2, 0, 0, 0);

	CargaEstacionario("pabellon_escaleras_rampa.obj", 13.5, 0, -18.3, 0,0,0);
	CargaEstacionario("pabellon_rampa_escaleras.obj", 13.5, 0, 18.3, 0,0,0);
	
	CargaEstacionario("pabellon_escaleras_rampa_c.obj", -13.5, 0, 24, 0,0,0);
	CargaEstacionario("pabellon_rampa_escaleras_c.obj", -13.5, 0, -24, 0,0,0);

	CargaEstacionario("pabellon_barandilla_1.obj", -16, 1, 22, 0, 90, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -16, 1, -22, 0, 90, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, -20, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, -16, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, -12, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, -8, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, -4, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, 0, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, 4, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, 8, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, 12, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, 16, 0, 0, 0);
	CargaEstacionario("pabellon_barandilla_1.obj", -14, 1, 20, 0, 0, 0);

	CargaEstacionario("pabellon_barandilla_2.obj", 14, 2.4, 20.9, 0,0,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 14, 2.4, -23.25, 0,0,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 22, 2.4, 12.250, 0,0,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 22, 2.4, 3, 0,0,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 22, 2.4, -6, 0,0,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 22, 2.4, -15.25, 0,0,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 19, 2.4, -19.35, 0,-90,0);
	CargaEstacionario("pabellon_barandilla_2.obj", 19, 2.4, 19.35, 0,-90,0);

	CargaEstacionario("pabellon_mesa.obj", -16, 1, 0, 0 , 0, 0);
	CargaEstacionario("pabellon_mesa.obj", -16, 1, 9, 0 , 0, 0);
	CargaEstacionario("pabellon_mesa.obj", -16, 1, -9, 0 , 0, 0);

	CargaEstacionario("pabellon_banquillos.obj", -12, 0, -4, 0, 0, 0);
	CargaEstacionario("pabellon_banquillos.obj", -12, 0, 4, 0, 0, 0);

	
	// Asegurarse de las rotaciones
	CargaEstacionario("pabellon_soporte_ventanas.obj", 6, 4.5, -24.9, 180, 0, 0);
	CargaEstacionario("pabellon_soporte_ventanas.obj", -6, 4.5, -24.9, 180, 0, 0);
	CargaEstacionario("pabellon_soporte_ventanas.obj", 6, 4.5, 24.9, 0, 0, 0);
	CargaEstacionario("pabellon_soporte_ventanas.obj", -6, 4.5, 24.9, 0, 0, 0);

	
	CargaEstacionario("pabellon_ventanas.obj", 6, 4.5, -25, 180, 0, 0);
	CargaEstacionario("pabellon_ventanas.obj", -6, 4.5, -25, 180, 0, 0);
	CargaEstacionario("pabellon_ventanas.obj", 6, 4.5, 25, 0, 0, 0);
	CargaEstacionario("pabellon_ventanas.obj", -6, 4.5, 25, 0, 0, 0);

	
}